import { forEach } from "../util"
import Module from './module'
export default class ModuleCollection {
  constructor(options) {
    // 注册模块  递归注册
    this.register([], options)
    console.log(this.root)
  }

  register(path, rootModule) {
    let newModule = new Module(rootModule)
    rootModule.newModule = newModule
    if(path.length == 0) {
      this.root = newModule
    }else{
      let parent = path.slice(0, -1).reduce((memo, current) => {
        return memo.getChild(current)
      }, this.root)
      parent.addChild(path[path.length-1], newModule)
    }
    
    if(rootModule.modules) {
      forEach(rootModule.modules, (module, moduleName) => {
        this.register([...path, moduleName], module)
      })
    }
  }
  // 获取命名空间
  getNamespace(path) {
    let root = this.root
    // 要看
    return path.reduce((namespace, key)=>{
      root = root.getChild(key)
      return namespace+ (root.namespace ? key+'/' : '')
    }, '')
  }
}